<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script>
    var role1 = {
      name: '主管',
      children: [{
          name: '商品管理',
          children: [{
              name: '添加商品'
            },
            {
              name: '修改商品'
            }
          ]
        },
        {
          name: '订单管理',
          children: [{
              name: '添加订单'
            },
            {
              name: '修改订单'
            }
          ]
        }
      ]
    }

    var role2 = {
      name: '主管',
      children: [{
          name: '商品管理',
          children: [{
              name: '添加商品'
            },
            {
              name: '修改商品'
            }
          ]
        },
        {
          name: '订单管理'
        }
      ]
    }


    // 1.使用双重for循环打印出role1下所有的叶子节点
    role1.children.forEach(item => {
      item.children.forEach(item1 => {
        return console.log(item1.name);
      })
    })
    // 2.使用双重for循环能打印出role2下所有的叶子节点吗? 如果不能, 那应该使用什么方式?
    function getLeaf(node) {
      // 没有子节点的情况直接返回并打印
      if (!node.children) {
        console.log(node.name);
        return
      }
      // 有子节点的情况下执行循环
      node.children.forEach(item => {
        getLeaf(item)
      })
    }
    getLeaf(role2)
  </script>
</head>

<body>

</body>

</html>